package xiaohong.juc.thread;

public class VolatileDemo {
 
    // 声明一个静态的 Integer 类型的变量 flag
    private volatile static Integer flag = 1;
 
    public static void main(String[] args) throws InterruptedException {
 
        // 启动一个新的线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                // 输出子线程在其工作内存中读取到的 flag 的值
                System.out.println("子线程工作内存读取到的flag的值：" + flag);
                
                // 子线程循环检查 flag 的值
                while (flag == 1) {
                    // 循环等待 flag 的值发生变化
                }
                
                // 输出子线程最新读取到的 flag 的值
                System.out.println("子线程工作内存读取到的flag的最新的值..." + flag);
            }
        }).start();
 
        // 主线程暂停 500 毫秒，确保子线程有足够时间启动并执行到 while 循环中
        Thread.sleep(500);
 
        // 主线程修改 flag 的值
        flag = 2;
        // 输出主线程中 flag 的值
        System.out.println("我是主线程工作内存flag的值：" + flag);
    }
}